/*
 * @Author: Wangjun
 * @Date: 2023-08-16 14:33:22
 * @LastEditTime: 2023-08-25 16:28:38
 * @LastEditors: Wangjun
 * @Description:
 * @FilePath: \nodex\nodectrl\op_fo.go
 * hnxr
 */
package nodectrl

import "gitee.com/hnxr_1/nodex"

func init() {
	nodex.Reister(new(FO))
}

type FO struct {
	nodex.Node
	X1  nodex.Boolean `remark:"输入1"`
	X2  nodex.Boolean `remark:"输入2"`
	X3  nodex.Boolean `remark:"输入3"`
	X4  nodex.Boolean `remark:"输入4"`
	X5  nodex.Boolean `remark:"输入5"`
	X6  nodex.Boolean `remark:"输入6"`
	X7  nodex.Boolean `remark:"输入7"`
	X8  nodex.Boolean `remark:"输入8"`
	X9  nodex.Boolean `remark:"输入9"`
	X10 nodex.Boolean `remark:"输入10"`
	R   nodex.Boolean `remark:"复位"`
	Y   nodex.Double  `remark:"输出Y,,out"`
}

func (m *FO) GetModelID() int {
	return nodex.ModControl
}

/**
 * @description:
 * @return {*}
 */
func (m *FO) GetName() string {
	return "FO"
}
func (m *FO) RegData() []byte {
	return nodex.MakeRegData(m, "首出", m.GetName(), "")
}

func (m *FO) Calc() (err error) {
	if m.EnQ {
		if *m.X1.Bad || *m.X2.Bad || *m.X3.Bad || *m.X4.Bad || *m.X5.Bad || *m.X6.Bad || *m.X7.Bad || *m.X8.Bad || *m.X9.Bad || *m.X10.Bad {
			m.Bad = true
			return //不计算
		}
	}
	m.Bad = false
	if m.R.Value {
		m.Y.Value = 0
		return
	}
	if m.X1.Value {
		m.Y.Value = 1
		return
	}
	if m.X2.Value {
		m.Y.Value = 2
		return
	}
	if m.X3.Value {
		m.Y.Value = 3
		return
	}
	if m.X4.Value {
		m.Y.Value = 4
		return
	}
	if m.X5.Value {
		m.Y.Value = 5
		return
	}
	if m.X6.Value {
		m.Y.Value = 6
		return
	}
	if m.X7.Value {
		m.Y.Value = 7
		return
	}
	if m.X8.Value {
		m.Y.Value = 8
		return
	}
	if m.X9.Value {
		m.Y.Value = 9
		return
	}
	if m.X10.Value {
		m.Y.Value = 10
		return
	}
	m.Y.Value = 0
	return
}
